// 图片上传服务器
const express = require("express")
const app = express()
const port = 9001 // 图片上传服务器的端口号
const Response = require("./utils/ResponseData")

// 配置跨域
const cors = require("cors")
app.use(cors({
    origin: "*"
}))

// 配置multer文件上传中间件配置
const multer = require("multer")
// 使用uuid动态生成不重名的图片
const uuid = require("uuid")
// 配置上传参数
const uploadTools = multer({
    storage: multer.diskStorage({// 该存储方案将会把文件直接存入磁盘
        destination: (req, file, callback) => {// 处理存储
            callback(null, 'static')
        },
        filename: (req, file, callback) => {// 处理文件名，在这对文件名进行重新命名，防止文件名重复被替换
            // 通过file，获取原始文件名，比如：wanyin.jpeg
            let name = file.originalname
            console.log("--------文件名：", name)
            // 截取文件的扩展名，比如：.jpeg .png
            let ext = name.substr(name.lastIndexOf('.'))
            // 通过uuid生成一个16进制的随机文件名
            let newName = uuid.v4() + ext
            // 通过callback进行重新设置
            callback(null, newName)
        }
    })
})

//  配置static目录为静态资源托管文件夹，这样就可以直接通过：http://localhost:9000/文件名 访问static目录下的资源
app.use(express.static("static"))
//  配置上传请求
//  上传action: http://localhost:9000/upload
app.post('/upload', uploadTools.single('file'), (req, res) => {
    // 这是需要响应给前端的图片的地址
    let url = "http://192.168.13.21:9001/" + req.file.filename
    console.log("图片上传成功！", url)
    res.send(Response.success(url, "图片上传成功！"))
})

// 监听服务器启动状态
app.listen(port, () => {
    console.log("文件上传服务器启动成功！")
})